package org.ncibi.cytoscape.metscape.multidisplay.gui.model;

import java.awt.Color;

import org.ncibi.cytoscape.metscape.multidisplay.MultiNet;
import org.ncibi.cytoscape.metscape.multidisplay.gui.barchart.HistogramBarValue;

public interface ControlInterface {

	void addMinMaxListener(MinMaxChangeListener minMaxChangeListener);
	void addMultiNetChangeListener(MultiNetChangeListener multiNetChangeListener);
	void addColorRangeChangeListener(ColorRangeChangeListener colorRangeChangeListener);
	void addAnimationValueListener(AnimationValueListener animationValueListener);
	void addAlignViewsListener(AlignViewsListener alignViewsListener);
	void addAnimationPostionChangeListener(AnimationPostionChangeListener l);
	
	double getMinValue();
	double getMinMinValue();
	double getMaxValue();
	double getMaxMaxValue();
	
	void setMinValue(double t);
	void setMaxValue(double t);
	void setColorRange(ColorRange crm);
	
	MinMaxValueModel getMinMaxValueModel();
	HistogramColorScaleModel getHistogramColorScaleModel();
	
	Color getMaxColor();
	Color getMinColor();
	
	boolean noBars();
	int numberOfBars();
	double getBarWidth();
	double getMaxBarHeight();
	HistogramBarValue getBar(int index);
	Color getBarColor(int index);

	void changeColorRange(ColorRange cr);
	void colorRangeChanged(ColorRange cr);

	void changeAnimationPosition(boolean moving, double score, double value);

	void alignNetworkViews();
	
	void startAnimation(MultiNet animation);
	void stopAnimation();
	void disposeOfMultiNet();
	void updateAnimatePosition(double incrementalFraction);

}
